Python 流程控制-for循环字典

        Python for循环不但可以遍历序列,还可以遍历字典。

通过 for 循环遍历字典

        先定义一个字典

1
2
3
4
5
6
7
8
9
In [4]: dic = {'a':1, 'b':2}
In [5]: dic.fromkeys('abcde',100)
Out[5]: {'a': 100, 'b': 100, 'c': 100, 'd': 100, 'e': 100}
In [6]: dic1 = dic.fromkeys('abcde',100)
In [7]: dic1
Out[7]: {'a': 100, 'b': 100, 'c': 100, 'd': 100, 'e': 100}

        遍历字典里的 key (直接遍历字典,不加任何方法就是遍历字典的 key)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
In [8]: for k in dic:
...: print k
...:
a
b
In [9]: for k in dic1:
...: print k
...:
a
c
b
e
d

        取字典里的值(要遍历 value 就要加上 dic1[k] 索引下标来取)

1
2
3
4
5
6
7
8
In [10]: for k in dic1:
...: print k,dic1[k]
...:
a 100
c 100
b 100
e 100
d 100

        格式化的输出

1
2
3
4
5
6
7
8
In [11]: for k in dic1:
...: print "%s --> %s" % (k,dic1[k])
...:
a --> 100
c --> 100
b --> 100
e --> 100
d --> 100

        如果只要占一行就在后边加逗号

1
2
3
4
In [12]: for k in dic1:
...: print "%s --> %s" % (k,dic1[k]),
...:
a --> 100 c --> 100 b --> 100 e --> 100 d --> 100

        还可以把字典作为列表遍历,取到每个元素也就是元组(使用 items() 遍历,通过一个值取出来就是元组)

1
2
3
4
5
6
7
8
9
In [13]: dic1.items()
Out[13]: [('a', 100), ('c', 100), ('b', 100), ('e', 100), ('d', 100)]
In [14]: for i in dic1.items():print i
('a', 100)
('c', 100)
('b', 100)
('e', 100)
('d', 100)

        然后可以对元组进行拆分(使用 items(),通过两个值来取就可以拆分元组)

1
2
3
4
5
6
In [15]: for k,v in dic1.items():print k,v
a 100
c 100
b 100
e 100
d 100

        也可以用 dic1.iteritems() ,只不过它返回是个对象;而 items() 是个列表。可以对这个对象进行遍历,用两个值(k和v)来接收,就可以得到两个值 key 和 value

1
2
3
4
5
6
In [16]: for k,v in dic1.iteritems():print k,v
a 100
c 100
b 100
e 100
d 100

        以上就是通过 for 循环遍历字典的方法

实例

实例1:乘法口诀表

        两个循环

1
2
3
4
5
6
#!/usr/bin/python
for i in xrange(1,10): #控制行数
for j in xrange(1,i+1): #每列的列数不一样,用j表示,控制列数
print "%s * %s = %s" % (j, i j*i), #用逗号不输出换行符
print #直接print输出换行,或者使用 print "\n"

        输出结果

1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# python 3.py
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81